#include<iostream>
#include<vector>

using namespace std;

//int main()
//{
//    int row;
//    cin>>row;
//
//    //构造特殊杨辉三角雏形
//    vector<vector<int>>save;
//    int index=1;
//    for(int i =0;i<row;i++)
//    {
//        vector<int>tmp;
//        tmp.resize(index,1);
//        save.push_back(tmp);
//        index+=2;
//    }
//
//    //杨辉三角内容
//    for(int i=2;i<row;i++)
//    {
//        for(int j=1;j<save[i].size()-1;j++)
//        {
//            //当前位置==save[i-1][j-1],左边==save[i-1][j-2],右边==save[i-1][j]
//            if(j-2>=0 && j<=save[i-1].size()-1)
//            {
//                save[i][j]=save[i-1][j-2]+save[i-1][j-1]+save[i-1][j];
//            }
//            else if(j-2<0)//左边没有
//            {
//                save[i][j]=save[i-1][j-1]+save[i-1][j];
//            }
//            else//右边没有
//            {
//                save[i][j]=save[i-1][j-2]+save[i-1][j-1];
//            }
//        }
//    }
//
//    for(int j =1;j<save[row-1].size();j++)
//    {
//        if(save[row-1][j]%2==0)
//        {
//            cout<<j+1<<endl;
//            return 0;
//        }
//    }
//
//    cout<<0<<endl;
//
//    return 0;
//}

//int main()
//{
//    int row;
//    cin>>row;
//    if(row<=2)
//    {
//        cout<<-1;
//        return 0;
//    }
//
//    //n+1*4 ==4
//    int tmp=row-2;
//    int div=4;
//    int count=2;
//    while(tmp>0)
//    {
//        tmp-=div;
//        div=(div*count);
//        count++;
//    }
//    if(tmp==0)
//    {
//        cout<<4;
//    }
//    else if(row%2==0)
//    {
//        cout<<3;
//    }
//    else {
//        cout << 2;
//    }
//}

//
//
//struct TreeNode {
//	int val;
//	struct TreeNode *left;
//	struct TreeNode *right;
//	TreeNode(int x) :
//			val(x), left(NULL), right(NULL) {
//	}
//};
//
//
////需要交换节点……
//class Solution {
//public:
//    void Mirror_2(TreeNode *ppRL,TreeNode *ppRR,TreeNode *pRL,TreeNode *pRR)
//    {
//        if(pRL==nullptr || pRR==nullptr)
//        {
//            return;
//        }
//
//        Mirror_2( pRL,pRR ,pRL->left,pRR->right);
//        Mirror_2(pRL , pRR,pRL->right,pRR->left);
//        ppRL->left=pRR;
//        ppRR->right=pRL;
//
//    }
//    void Mirror(TreeNode *pRoot) {
//        //分别交换树的左右子树
//        Mirror_2(pRoot,pRoot,pRoot->left,pRoot->right);
//    }
//
//    void Print(TreeNode *pRoot)
//    {
//        if(pRoot== nullptr)
//        {
//            return ;
//        }
//
//        cout<<pRoot->val<<' ';
//        Print(pRoot->left);
//        Print(pRoot->right);
//    }
//};
//
//int main()
//{
//    TreeNode d1(8);
//    TreeNode d2(6);
//    TreeNode d3(10);
//    TreeNode d4(5);
//    TreeNode d5(7);
//    TreeNode d6(9);
////    TreeNode d7(11);
//
//    d1.left=&d2;
//    d1.right=&d3;
//
//    d2.left=&d4;
//    d2.right=&d5;
//
//    d3.left=&d6;
////    d3.right=&d7;
//    Solution a1;
//
//    a1.Print(&d1);
//     cout<<endl;
//    a1.Mirror(&d1);
//    a1.Print(&d1);
//    cout<<endl;
//}


//3个瓶子一瓶汽水
//可以借瓶子
//#include<iostream>
//using namespace std;
//
//int main()
//{
//    int bottle;
//    while(cin>>bottle)
//    {
//        if(bottle==0)
//        {
//            break;
//        }
//
//        int count=0;
//
//        while(bottle >1)
//        {
//            if(bottle==2)
//            {
//                bottle++;
//            }
//            int tmp=bottle/3;
//            bottle%=3;
//            bottle+=tmp;
//            count+=tmp;
//        }
//
//
//        cout<<count<<endl;
//    }
//    cout<<bottle<<endl;
//    return 0;
//}


#include<algorithm>
#include<iostream>
#include<string>
using namespace std;


void Mini_Str(string &Short,string& Long,string &save)
{
    int index=0,index2;
    string tmp;
    for(int i =0;i<Short.size();i++)
    {
        index2=i;
        while(index<Long.size())
        {
            if(Short[index2]==Long[index])
            {
                tmp.push_back(Short[index2]);
                index++;
                index2++;

            }
            else
            {
                if(save.size()<tmp.size())
                {
                    save=tmp;
                }
                else
                {
                    index++;
                }
                tmp.clear();
                index2=i;
            }
        }
        index=0;

    }

}
int main()
{
    string str1,str2,save;
    cin>>str1>>str2;

    if(str1.size()<str2.size())
    {
        Mini_Str(str1,str2,save);
    }
    else
    {
        Mini_Str(str2,str1,save);
    }
    cout<<save<<endl;
    return 0;
}